From: Michael Albinus Date: Fri, 21 Feb 2025 13:47:15 +0000 (+0100) Subject: Use a persistent directory as default directory in diff X-Git-Tag: archive/raspbian/1%30.2+1-2+rpi1^2~2^2~24^2~282 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success/%22http:/www.example.com/cgi/success?a=commitdiff_plain;h=77441190252ce3a147e9535e422f15c1f6e38241;p=emacs.git Use a persistent directory as default directory in diff * lisp/vc/diff.el (diff-no-select): Use `temporary-file-directory' as default directory. Set default file permissions temporarily to #o600. (Bug#69606) (cherry picked from commit ae439cc1b9f428a8247548f4ef3b992608a3c09b) --- diff --git a/lisp/vc/diff.el b/lisp/vc/diff.el index 8f8ed69cfd9..555ad80d1dd 100644 --- a/lisp/vc/diff.el +++ b/lisp/vc/diff.el @@ -187,8 +187,7 @@ returns the buffer used." (prin1-to-string new)))) (list (or old-alt old) (or new-alt new))))) - " ")) - (thisdir default-directory)) + " "))) (with-current-buffer buf (setq buffer-read-only t) (buffer-disable-undo (current-buffer)) @@ -199,25 +198,26 @@ returns the buffer used." (setq-local revert-buffer-function (lambda (_ignore-auto _noconfirm) (diff-no-select old new switches no-async (current-buffer)))) - (setq default-directory thisdir) + (setq default-directory temporary-file-directory) (setq diff-default-directory default-directory) (let ((inhibit-read-only t)) (insert command "\n")) - (if (and (not no-async) (fboundp 'make-process)) - (let ((proc (start-process "Diff" buf shell-file-name - shell-command-switch command))) - (set-process-filter proc #'diff-process-filter) - (set-process-sentinel - proc (lambda (proc _msg) - (with-current-buffer (process-buffer proc) - (diff-sentinel (process-exit-status proc) - old-alt new-alt))))) - ;; Async processes aren't available. - (let ((inhibit-read-only t)) - (diff-sentinel - (call-process shell-file-name nil buf nil - shell-command-switch command) - old-alt new-alt)))) + (with-file-modes #o600 + (if (and (not no-async) (fboundp 'make-process)) + (let ((proc (start-process "Diff" buf shell-file-name + shell-command-switch command))) + (set-process-filter proc #'diff-process-filter) + (set-process-sentinel + proc (lambda (proc _msg) + (with-current-buffer (process-buffer proc) + (diff-sentinel (process-exit-status proc) + old-alt new-alt))))) + ;; Async processes aren't available. + (let ((inhibit-read-only t)) + (diff-sentinel + (call-process shell-file-name nil buf nil + shell-command-switch command) + old-alt new-alt))))) buf)) (defun diff-process-filter (proc string)